package front

import (
	"geekai/api/dto/response"
	"geekai/api/handler"
	"geekai/core"
	logger2 "geekai/logger"
	"geekai/model"
	"geekai/utils"
	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

var log = logger2.GetLogger()

type MenuHandler struct {
	handler.BaseHandler
}

func NewMenuHandler(app *core.AppServer, db *gorm.DB) *MenuHandler {
	return &MenuHandler{handler.BaseHandler{App: app, DB: db}}
}

// List godoc
// @Summary      查询菜单列表
// @Description  查询菜单列表
// @Tags         前台-菜单
// @Accept       json
// @Produce      json
// @Param        index   query     bool  true  "判断是否进入首页"
// @Success      200  {object}  types.BizVo{data=[]response.Menu}
// @Router       /api/menu/list [get]
func (h *MenuHandler) List(c *gin.Context) {
	index := h.GetBool(c, "index")
	var items []model.Menu
	var list = make([]response.Menu, 0)
	session := h.DB.Session(&gorm.Session{})
	session = session.Where("enabled", true)
	// 判断是不是进入首页获取菜单
	if index {
		session = session.Where("id IN ?", h.App.SysConfig.IndexNavs)
	}
	res := session.Order("sort_num asc").Find(&items)
	if res.Error == nil {
		for _, item := range items {
			var menuVo response.Menu
			err := utils.CopyObject(item, &menuVo)
			if err == nil {
				list = append(list, menuVo)
			} else {
				log.Errorf("拷贝数据出现错误：%v", err)
			}
		}
	}
	utils.SUCCESS(c, list)
}
